import axios from 'axios'
import { Message } from 'element-ui'
import router from '../router/index.js'
import { getToken } from '@/utils/auth'

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // let tokenStr = window.sessionStorage.getItem("tokenStr");
    // if (tokenStr) {
    //   config.headers["Authorization"] = tokenStr;
    // }
    const tokenStr = getToken()
    if (tokenStr) {
      config.headers['X-Token'] = `${tokenStr}`
    }
    return config
  },
  error => {
    console.log(error)
  }
)

// 响应拦截器
axios.interceptors.response.use(
  success => {
    // 业务逻辑错误
    if (success.status && success.status === 200) {
      if (
        success.data.code === 500 ||
        success.data.code === 401 ||
        success.data.code === 403
      ) {
        Message.error({
          message: success.data.msg
        })
      }
      // if (success.data.msg) {
      //     Message.success({
      //         message: success.data.msg,
      //     })
      // }
    }
    return success.data
  },
  error => {
    if (error.response === undefined) {
      return
    }
    if (error.response.code === 504 || error.response.code === 404) {
      Message.error({
        message: '连接不到服务器'
      })
    } else if (error.response.code === 403) {
      Message.error({
        message: '权限不足'
      })
    } else if (error.response.code === 401) {
      Message.error({
        message: '未登录，请登录'
      })
      router.replace('/')
    } else {
      if (error.response.data.message) {
        Message.error({
          message: error.response.data.msg
        })
      } else {
        Message.error({
          message: '未知错误'
        })
      }
    }
    return
  }
)

const base = ''

// 传送 json 的 post 请求
export const postRequest = (url, params) => {
  return axios({
    method: 'post',
    url: `${base}${url}`,
    data: params
  })
}

// 传送 json 的 post 请求
export const postRequest2 = (url, params) => {
  return axios({
    method: 'post',
    url: `${base}${url}`,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data: params,
    transformRequest: [
      data => {
        let formData = new FormData()
        for (let key in params) {
          formData.append(key, params[key])
        }
        return formData
      }
    ]
  })
}

//post
export const postRequest3 = (url, params, body) => {
  return axios({
    method: 'post',
    url: `${base}${url}`,
    headers: {
      'Content-Type' : "application/json"
    },
    params: {
      status : params
    },
    data: body
  })
}

// 传送 json 的 put 请求
export const putRequest = (url, params) => {
  return axios({
    method: 'put',
    url: `${base}${url}`,
    data: params
  })
}

// 传送 json 的 delete 请求
export const deleteRequest = (url, params) => {
  return axios({
    method: 'delete',
    url: `${base}${url}`,
    data: params
  })
}

// 传送 json 的 get 请求
export const getRequest = (url, params) => {
  return axios({
    method: 'get',
    url: `${base}${url}`,
    data: params
  })
}
